package org.zjx.entity;

import lombok.Data;
import org.zjx.db.ScreenDB;
import org.zjx.enums.route.RouteType;

import java.io.Serializable;
import java.util.List;

/**
 * 传送数据实体类
 * 表示游戏中的一个传送点或路径连接点
 */
@Data
public class Transfer implements Serializable {
    private static final long serialVersionUID = 1L;
    private int id;               // 唯一ID
    private RouteType type;       // 传送类型
    private int fromSceneId;     // 起始场景id
    private int fromX;            // 起始X坐标
    private int fromY;            // 起始Y坐标
    private int toSceneId;       // 目标场景id
    private int toX;              // 目标X坐标
    private int toY;              // 目标Y坐标
    private int clickX;           // 需要点击的坐标X
    private int clickY;           // 需要点击的坐标Y
    private int npcId;            // 关联NPC ID(如果有)
    private List<String> dialogues; // NPC对话内容(如果有)


    /**
     * 转换为起点位置
     * @return 起点位置对象
     */
    public Location getStartLocation() {
        return new Location(new ScreenDB().findById(fromSceneId), fromX, fromY);
    }

    /**
     * 转换为终点位置
     * @return 终点位置对象
     */
    public Location getEndLocation() {
        return new Location(new ScreenDB().findById(toSceneId),toX, toY);
    }

    /**
     * 判断是否是房间传送(进入或离开房间)
     * @return 如果是房间传送返回true
     */
    public boolean isRoomTransfer() {
        return type == RouteType.ROOM_ENTER || type == RouteType.ROOM_EXIT;
    }
}